package com.yinsin.jpabatis.type;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LongTypeHandler extends BaseTypeHandler<Long> {
	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, Long parameter, JdbcType jdbcType) throws SQLException {
		ps.setLong(i, parameter);
	}

	@Override
	public Long getNullableResult(ResultSet rs, String columnName) throws SQLException {
		long result = rs.getLong(columnName);
		return result == 0 && rs.wasNull() ? null : result;
	}

	@Override
	public Long getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
		long result = rs.getLong(columnIndex);
		return result == 0 && rs.wasNull() ? null : result;
	}

	@Override
	public Long getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
		long result = cs.getLong(columnIndex);
		return result == 0 && cs.wasNull() ? null : result;
	}
}
